const app = getApp()
const config = require('../../../utils/config.js')
const api = require('../../../utils/api.js')

Page({
  data: {
    id: 0,                // 商品ID
    product: null,        // 商品信息
    loading: true,        // 加载状态
    showSpecPopup: false, // 规格弹窗显示状态
    selectedSpec: 0,      // 选中的规格ID
    selectedSpecName: '', // 选中的规格名称
    quantity: 1,          // 商品数量
    cartCount: 0,         // 购物车商品数量
    isFavorite: false,    // 收藏状态
    action: 'cart'        // 当前操作：cart-加入购物车, buy-立即购买
  },
  
  onLoad(options) {
    if (options.id) {
      this.setData({
        id: options.id
      })
      this.fetchProductDetail(options.id)
    } else {
      wx.showToast({
        title: '商品不存在',
        icon: 'none'
      })
      setTimeout(() => {
        wx.navigateBack()
      }, 1500)
    }
  },
  
  onShow() {
    // 获取购物车数量
    this.getCartCount()
  },
  
  onShareAppMessage() {
    return {
      title: this.data.product ? this.data.product.name : '商品详情',
      path: `/pages/product/detail/detail?id=${this.data.id}`
    }
  },
  
  // 获取商品详情
  fetchProductDetail(id) {
    this.setData({ loading: true })
    
    // 调用API获取商品详情
    api.get(`${config.API.PRODUCT.DETAIL}${id}`)
      .then(res => {
        // 处理商品数据
        this.setData({
          product: res.data,
          loading: false
        })
      })
      .catch(err => {
        console.error('获取商品详情失败:', err)
        
        // 使用模拟数据（实际项目中应该删除此部分）
        const mockProduct = {
          id: id,
          name: '示例商品 - ' + id,
          price: 299.00,
          originalPrice: 399.00,
          stock: 999,
          sales: 1000,
          cover: 'https://img.yzcdn.cn/vant/cat.jpeg',
          gallery: [
            'https://img.yzcdn.cn/vant/cat.jpeg',
            'https://img.yzcdn.cn/vant/bird.jpeg',
            'https://img.yzcdn.cn/vant/tree.jpeg'
          ],
          description: '这是一个示例商品的详细描述，包含了商品的各种信息和特点。',
          detailImages: [
            'https://img.yzcdn.cn/vant/cat.jpeg',
            'https://img.yzcdn.cn/vant/bird.jpeg'
          ],
          specs: [
            { id: 1, name: '规格1' },
            { id: 2, name: '规格2' },
            { id: 3, name: '规格3' }
          ]
        }
        
        this.setData({
          product: mockProduct,
          loading: false
        })
        
        wx.showToast({
          title: '获取商品详情失败，显示模拟数据',
          icon: 'none'
        })
      })
  },
  
  // 获取购物车数量
  getCartCount() {
    // 从本地存储获取购物车数据
    const cart = wx.getStorageSync('cart') || []
    const count = cart.reduce((total, item) => total + item.quantity, 0)
    
    this.setData({
      cartCount: count
    })
    
    // 更新tabBar购物车图标
    if (typeof app.updateCartBadge === 'function') {
      app.updateCartBadge(count)
    }
  },
  
  // 预览图片
  previewImage(e) {
    const current = e.currentTarget.dataset.url
    const urls = this.data.product.gallery && this.data.product.gallery.length > 0 
      ? this.data.product.gallery 
      : [this.data.product.cover]
    
    wx.previewImage({
      current,
      urls
    })
  },
  
  // 选择规格
  selectSpec(e) {
    const id = e.currentTarget.dataset.id
    const specs = this.data.product.specs
    const selectedSpec = specs.find(spec => spec.id === id)
    
    this.setData({
      selectedSpec: id,
      selectedSpecName: selectedSpec ? selectedSpec.name : ''
    })
  },
  
  // 增加数量
  increaseQuantity() {
    if (this.data.quantity < this.data.product.stock) {
      this.setData({
        quantity: this.data.quantity + 1
      })
    }
  },
  
  // 减少数量
  decreaseQuantity() {
    if (this.data.quantity > 1) {
      this.setData({
        quantity: this.data.quantity - 1
      })
    }
  },
  
  // 输入数量
  inputQuantity(e) {
    let value = parseInt(e.detail.value)
    
    if (isNaN(value) || value < 1) {
      value = 1
    } else if (value > this.data.product.stock) {
      value = this.data.product.stock
    }
    
    this.setData({
      quantity: value
    })
  },
  
  // 加入购物车按钮
  addToCart() {
    if (!this.checkLogin()) return
    
    // 如果有规格，显示规格选择
    if (this.data.product.specs && this.data.product.specs.length > 0) {
      this.setData({
        showSpecPopup: true,
        action: 'cart'
      })
    } else {
      this.confirmAddToCart()
    }
  },
  
  // 确认加入购物车
  confirmAddToCart() {
    const product = this.data.product
    const selectedSpec = this.data.selectedSpec
    const quantity = this.data.quantity
    
    // 校验规格
    if (product.specs && product.specs.length > 0 && !selectedSpec) {
      wx.showToast({
        title: '请选择规格',
        icon: 'none'
      })
      return
    }
    
    // 校验库存
    if (quantity > product.stock) {
      wx.showToast({
        title: '库存不足',
        icon: 'none'
      })
      return
    }
    
    // 获取当前购物车
    let cart = wx.getStorageSync('cart') || []
    
    // 查找购物车中是否已有该商品
    const existIndex = cart.findIndex(item => 
      item.id === product.id && 
      item.selectedSpec === selectedSpec
    )
    
    if (existIndex >= 0) {
      // 如果已存在，则增加数量
      cart[existIndex].quantity += quantity
    } else {
      // 如果不存在，则添加到购物车
      const selectedSpecObj = product.specs && product.specs.find(spec => spec.id === selectedSpec)
      cart.push({
        id: product.id,
        name: product.name,
        price: product.price,
        cover: product.cover,
        selectedSpec: selectedSpec,
        selectedSpecName: selectedSpecObj ? selectedSpecObj.name : '',
        quantity: quantity
      })
    }
    
    // 保存购物车数据
    wx.setStorageSync('cart', cart)
    
    // 更新购物车数量
    this.getCartCount()
    
    // 关闭弹窗
    this.closeSpecPopup()
    
    // 提示成功
    wx.showToast({
      title: '已加入购物车',
      icon: 'success'
    })
  },
  
  // 立即购买按钮
  buyNow() {
    if (!this.checkLogin()) return
    
    // 如果有规格，显示规格选择
    if (this.data.product.specs && this.data.product.specs.length > 0) {
      this.setData({
        showSpecPopup: true,
        action: 'buy'
      })
    } else {
      this.confirmBuyNow()
    }
  },
  
  // 确认立即购买
  confirmBuyNow() {
    // 模拟立即购买，先加入购物车，然后跳转到结算页
    this.confirmAddToCart()
    
    // 关闭弹窗
    this.closeSpecPopup()
    
    // 跳转到购物车页面
    wx.switchTab({
      url: '/pages/cart/index'
    })
  },
  
  // 关闭规格弹窗
  closeSpecPopup() {
    this.setData({
      showSpecPopup: false
    })
  },
  
  // 切换收藏状态
  toggleFavorite() {
    if (!this.checkLogin()) return
    
    this.setData({
      isFavorite: !this.data.isFavorite
    })
    
    wx.showToast({
      title: this.data.isFavorite ? '已收藏' : '已取消收藏',
      icon: 'success'
    })
  },
  
  // 联系客服
  contactService() {
    // 调用微信客服功能
    wx.showToast({
      title: '正在连接客服...',
      icon: 'none'
    })
  },
  
  // 跳转到购物车
  navigateToCart() {
    wx.switchTab({
      url: '/pages/cart/index'
    })
  },
  
  // 跳转到首页
  navigateToHome() {
    wx.switchTab({
      url: '/pages/index/index'
    })
  },
  
  // 检查登录状态
  checkLogin() {
    const token = wx.getStorageSync('token')
    if (!token) {
      wx.showToast({
        title: '请先登录',
        icon: 'none'
      })
      
      setTimeout(() => {
        wx.navigateTo({
          url: '/pages/login/login'
        })
      }, 1500)
      
      return false
    }
    
    return true
  }
}) 